<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
<META NAME="GENERATOR" CONTENT="Adobe FrameMaker 7.0/HTML Export Filter">
<LINK REL="STYLESHEET" HREF="KDM_1.0_19_structurepkg.css" CHARSET="ISO-8859-1" TYPE="text/css">
<TITLE> 19	Structure Package</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
<DIV>
<H6 CLASS="Heading">
<A NAME="pgfId-998826"></A><A NAME="58728"></A>Structure Package</H6>
</DIV>
<DIV>
<H3 CLASS="Heading1">
<A NAME="pgfId-1086553"></A>Overview</H3>
<P CLASS="Body">
<A NAME="pgfId-1098017"></A>Structure package defines constructs for defining the high level abstraction of the organization of a software system. The Structure model constructs specify how the software's divisions and subdivisions down to the modules defined in the Code Package.</P>
<P CLASS="Body">
<A NAME="pgfId-1098019"></A>The form of the system may be presented as a single form or a set of layers components, subsystems, or packages. The reach of this representation extends from a uniform architecture to entire family of module-sharing subsystems.</P>
<P CLASS="Body">
<A NAME="pgfId-1098021"></A>The Structure model is a collection of StructuralElement instances. </P>
<P CLASS="Body">
<A NAME="pgfId-1098023"></A>Packages are the leaf elements of the Structure model, representing a division of a system's Code Modules into discrete, non-overlapping parts. An undifferentiated architecture is represented by a single Package. </P>
<P CLASS="Body">
<A NAME="pgfId-1098063"></A>StructuralGroup recursively gathers StructuralElements to portray various architectural divisions. The Software System subclass provides a gathering point for all the system's packages directly or indirectly through other Structure elements. The packages may be further separated into Subsystems, Layers, and Components or Architecture Views. </P>
</DIV>
<DIV>
<H3 CLASS="Heading1">
<A NAME="pgfId-1098066"></A><A NAME="_Toc131848410"></A>Organization of the Structure Package</H3>
<P CLASS="Body">
<A NAME="pgfId-1098029"></A>The Structure package defines a collection of meta-model elements whose purpose is to represent architectural organization of the existing software system.</P>
<P CLASS="Body">
<A NAME="pgfId-1098625"></A>The Structure package consists of the following 3 class diagrams:</P>
<UL>
<LI CLASS="Bullet1">
<A NAME="pgfId-1098626"></A>StructureModel</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-1098627"></A>StructureInheritances</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-1098628"></A>ExtendedStructureElements</LI>
</UL>
<P CLASS="Body">
<A NAME="pgfId-1098031"></A>The Structure package depends on the following packages:</P>
<UL>
<LI CLASS="Bullet1">
<A NAME="pgfId-1098034"></A>Core</LI>
<LI CLASS="Bullet1">
<A NAME="pgfId-1098618"></A>kdm</LI>
</UL>
</DIV>
<DIV>
<H3 CLASS="Heading1">
<A NAME="pgfId-1098110"></A><A NAME="_Toc131848412"></A>StructureModel Class Diagram</H3>
<P CLASS="Body">
<A NAME="pgfId-1098111"></A>The StructureModel class diagram follows the uniform pattern for KDM models and extends the KDM framework with specific meta-model elements related to high-level structural elements and their associations. The class diagram shown in <A HREF="KDM_1.0_19_structurepkg.htm#31385" CLASS="XRef">See - StructureModel Class Diagram.</A> captures these classes and their relations.</P>
<P CLASS="Body">
<A NAME="pgfId-1098010"></A>&nbsp;</P>
<DIV>
<IMG SRC="KDM_1.0_19_structurepkg-1.gif">
</DIV>
<DIV>
<H6 CLASS="FigureCaption1">
<A NAME="pgfId-1098011"></A><A NAME="31385"></A>- StructureModel Class Diagram</H6>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098141"></A><A NAME="_Toc131848413"></A>StructureModel Class</H4>
<P CLASS="Body">
<A NAME="pgfId-1098142"></A>The StructureModel is a specific KDM model that represents the logical organization of a software system and owns all of the system's StructuralElements.</P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098144"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098774"></A>KDMModel</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098775"></A>Associations</H6>
<P CLASS="Body">
<A NAME="pgfId-1098781"></A>&nbsp;</P>
<TABLE BORDER="1">
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<H6 CLASS="TableText1">
<A NAME="pgfId-1098778"></A>structureElement:AbstractStructureElement[0..*]</H6>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Body">
<A NAME="pgfId-1098780"></A>structure elements owned by the model</P>
</TD>
</TR>
</TABLE>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098782"></A>Constraints</H6>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098157"></A>Semantics</H6>
</DIV>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098161"></A><A NAME="_Toc131848414"></A>AbstractStructureElement Class (abstract)</H4>
<P CLASS="Body">
<A NAME="pgfId-1098162"></A>The AbstractStructureElement represents an architectural part, related to the organization of the existing software system into modules.</P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098164"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098165"></A>KDMEntity</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098787"></A>Associations</H6>
<P CLASS="Body">
<A NAME="pgfId-1098793"></A>&nbsp;</P>
<TABLE BORDER="1">
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<H6 CLASS="TableText1">
<A NAME="pgfId-1098790"></A>structureElement:AbstractStructureElement[0..*]</H6>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Body">
<A NAME="pgfId-1098792"></A>structure elements owned by the model</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<H6 CLASS="TableText1">
<A NAME="pgfId-1098805"></A>structureRelationship:AbstractStructureRelationship[0..*]</H6>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Body">
<A NAME="pgfId-1098807"></A>&nbsp;</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<H6 CLASS="TableText1">
<A NAME="pgfId-1098801"></A>aggregated:KDMAggregatedRelationship[0..*]</H6>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Body">
<A NAME="pgfId-1098803"></A>&nbsp;</P>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<H6 CLASS="TableText1">
<A NAME="pgfId-1098797"></A>implementation:KDMEntity[0..*]</H6>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<P CLASS="Body">
<A NAME="pgfId-1098799"></A>&nbsp;</P>
</TD>
</TR>
</TABLE>
<P CLASS="Body">
<A NAME="pgfId-1098785"></A>&nbsp;</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098175"></A>Constraints</H6>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098176"></A>Semantics</H6>
</DIV>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098179"></A><A NAME="_Toc131848415"></A>AbstractStructureRelationship Class (abstract)</H4>
<P CLASS="Body">
<A NAME="pgfId-1098180"></A>The AbstractStructureRelationship class.</P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098182"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098183"></A>KDMRelationship</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098198"></A>Constraints</H6>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098200"></A>Semantics</H6>
</DIV>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098224"></A><A NAME="_Toc131848417"></A>Subsystem Class</H4>
<P CLASS="Body">
<A NAME="pgfId-1098225"></A>The Subsystem collects the architectural parts of a software subsystem. The parts may be any other StructuralElement. </P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098227"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098228"></A>StructureGroup</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098230"></A>Semantics</H6>
</DIV>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098233"></A><A NAME="_Toc131848418"></A>Layer Class</H4>
<P CLASS="Body">
<A NAME="pgfId-1098234"></A>The Layer collects the architectural parts of a software subsystem to represent a software layer. The parts may be any other StructuralElement.</P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098236"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098237"></A>StructureGroup</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098239"></A>Semantics</H6>
</DIV>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098243"></A><A NAME="_Toc131848419"></A>Component Class</H4>
<P CLASS="Body">
<A NAME="pgfId-1098244"></A>The Component represents a collection, directly or indirectly, of code resources, which comprises an architectural component.</P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098246"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098247"></A>StructureGroup</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098249"></A>Semantics</H6>
</DIV>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098252"></A><A NAME="_Toc131848420"></A>SoftwareSystem Class</H4>
<P CLASS="Body">
<A NAME="pgfId-1098253"></A>The SoftwareSystem represents the entire system organization. It may contain subsystem or other StructureElements.</P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098255"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098256"></A>StructureGroup</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098258"></A>Semantics</H6>
</DIV>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098654"></A>ArchitectureView Class</H4>
<P CLASS="Body">
<A NAME="pgfId-1098655"></A>The ArchitectureView class represents a logical packaging of the architectural artifacts related to a particular view of a software system. </P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098656"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098657"></A>StructureGroup</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098658"></A>Semantics</H6>
<P CLASS="Body">
<A NAME="pgfId-1096439"></A>&nbsp;</P>
</DIV>
</DIV>
</DIV>
<DIV>
<H3 CLASS="Heading1">
<A NAME="pgfId-1098637"></A><A NAME="_Toc131848411"></A>StructureInheritances Class Diagram</H3>
<P CLASS="Body">
<A NAME="pgfId-1098641"></A>The StructureInheritances class diagram shown in <A HREF="KDM_1.0_19_structurepkg.htm#11609" CLASS="XRef">See - StructureInheritances Class Diagram.</A> depicts how various data classes are types of Core KDM classes. Each of the Structure Package classes within this diagram inherits certain properties from KDM classes defined within the KDM Core Package.</P>
<P CLASS="Body">
<A NAME="pgfId-1098645"></A>&nbsp;</P>
<DIV>
<IMG SRC="KDM_1.0_19_structurepkg-2.gif">
</DIV>
<DIV>
<H6 CLASS="FigureCaption-">
<A NAME="pgfId-1098647"></A><A NAME="11609"></A>- StructureInheritances Class Diagram</H6>
<P CLASS="Body">
<A NAME="pgfId-1098634"></A>&nbsp;</P>
</DIV>
</DIV>
<DIV>
<H3 CLASS="Heading1">
<A NAME="pgfId-1098694"></A>ExtenededStructureElements Class Diagram</H3>
<P CLASS="Body">
<A NAME="pgfId-1098695"></A>The ExtendedStructureElements class diagram defines two &quot;wildcard&quot; generic elements for the structure model as determined by the KDM model pattern: a generic structure entity and a generic structure relationship.</P>
<P CLASS="Body">
<A NAME="pgfId-1098699"></A>The classes and associations of the ExtendedStructureElements diagram are shown in <A HREF="KDM_1.0_19_structurepkg.htm#34260" CLASS="XRef">See - ExtendedStructureElements Class Diagram.</A>. </P>
<P CLASS="Body">
<A NAME="pgfId-1098703"></A>&nbsp;</P>
<DIV>
<IMG SRC="KDM_1.0_19_structurepkg-3.gif">
</DIV>
<DIV>
<H6 CLASS="FigureCaption-">
<A NAME="pgfId-1098704"></A><A NAME="34260"></A>- ExtendedStructureElements Class Diagram</H6>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098705"></A>StructureElement Class (generic)</H4>
<P CLASS="Body">
<A NAME="pgfId-1098706"></A>The StructureElement class is a generic meta-model element that can be used to define new &quot;virtual&quot; meta-model elements through the KDM light-weight extension mechanism</P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098707"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098708"></A>AbstractStructureElement</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098872"></A>Constraints</H6>
<DIV>
<H6 CLASS="List1">
<A NAME="pgfId-1098873"></A>StructureElement should have at least one stereotype</H6>
<P CLASS="paragraph">
<A NAME="pgfId-1098874"></A>Semantics</P>
<P CLASS="paragraph">
<A NAME="pgfId-1098875"></A>An structure entity with under specified semantics. It is a concrete class that can be used as the base element of a new &quot;virtual&quot; meta-model entity types of the structure model. This is one of the KDM extension points which can integrate additional language-specific, application-specific or implementer-specific pieces of knowledge into the standard KDM representation.</P>
</DIV>
</DIV>
</DIV>
<DIV>
<H4 CLASS="Heading2">
<A NAME="pgfId-1098711"></A>StructureRelationship Class (generic)</H4>
<P CLASS="Body">
<A NAME="pgfId-1098712"></A>The StructureRelationship class is a generic meta-model element that can be used to define new &quot;virtual&quot; meta-model elements through the KDM light-weight extension mechanism </P>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098713"></A>Superclass</H6>
<P CLASS="Body">
<A NAME="pgfId-1098714"></A>AbstractStructureRelationship</P>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098715"></A>Associations</H6>
<P CLASS="Body">
<A NAME="pgfId-1098725"></A>&nbsp;</P>
<TABLE BORDER="1">
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<H6 CLASS="TableText1">
<A NAME="pgfId-1098718"></A>from:AbstractStructureElement[1]</H6>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<H6 CLASS="TableText">
<A NAME="pgfId-1098720"></A>The structure element origin endpoint of the relationship</H6>
</TD>
</TR>
<TR>
<TD ROWSPAN="1" COLSPAN="1">
<H6 CLASS="TableText1">
<A NAME="pgfId-1098722"></A>to:KDMEntity[1]</H6>
</TD>
<TD ROWSPAN="1" COLSPAN="1">
<H6 CLASS="TableText">
<A NAME="pgfId-1098724"></A>the target of the relationship</H6>
</TD>
</TR>
</TABLE>
</DIV>
<DIV>
<H6 CLASS="Heading4">
<A NAME="pgfId-1098889"></A>Constraints</H6>
<DIV>
<H6 CLASS="List1">
<A NAME="pgfId-1098890"></A>StructureRelationship should have at least one stereotype</H6>
<P CLASS="paragraph">
<A NAME="pgfId-1098891"></A>Semantics</P>
<P CLASS="paragraph">
<A NAME="pgfId-1098892"></A>An structure relationship with under specified semantics. It is a concrete class that can be used as the base element of a new &quot;virtual&quot; meta-model relationship types of the structure model. This is one of the KDM extension points which can integrate additional language-specific, application-specific or implementer-specific pieces of knowledge into the standard KDM representation.</P>
<P CLASS="paragraph">
<A NAME="pgfId-1098893"></A>&nbsp;</P>
<P CLASS="paragraph">
<A NAME="pgfId-1098729"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-1098692"></A>&nbsp;</P>
<P CLASS="Body">
<A NAME="pgfId-1088609"></A>&nbsp;</P>
</DIV>
</DIV>
</DIV>
</DIV>
</BODY>
</HTML>
